
    /**  
    * @Title: AlipayRequest.java
    * @Package com.third.alipay.web
    * @Description: 
    * @author likai
    * @date 2017年8月31日
    * @version V1.0  
    */
    
package com.third.base.ali;


    /**
    * @ClassName: AlipayRequest
    * @Description: 支付宝业务参数
    * @author likai
    * @date 2017年8月31日
    *
    */

public class AlipayParam {
	//活动状态,不填默认返回所有类型。 
	public enum CashStatus{
		//ALL:所有类型的活动 CREATED: 已创建未打款 PAID:已打款 READY:活动已开始 PAUSE:活动已暂停 CLOSED:活动已结束 SETTLE:活动已清算
		PAUSE,READY,CLOSED,ALL,CREATED,PAID,SETTLE
	} 
	
	/*------------------------------支付必传参数---------------------------------------------------*/
	private String out_trade_no;//商户订单号，64个字符以内、可包含字母、数字、下划线；需保证在商户端不重复
	private String trade_no;//支付宝交易号，和商户订单号不能同时为空
	private String product_code;//销售产品码，与支付宝签约的产品码名称。 注：目前仅支持FAST_INSTANT_TRADE_PAY
	private String total_amount;//订单总金额，单位为元，精确到小数点后两位，取值范围[0.01,100000000]
	private String subject;//订单标题
	private String return_url;// 页面跳转同步通知页面路径 需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
	private String notify_url;// 服务器异步通知页面路径  需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
	private String auth_code;// 用户付款二维码，25~30开头的长度为16~24位的数字，实际字符串长度以开发者获取的付款码长度为准
	private String refund_amount;//需要退款的金额，该金额不能大于订单金额,单位为元，支持两位小数
	private String refund_reason;//退款的原因说明
	private String out_request_no;//标识一次退款请求，同一笔交易多次退款需要保证唯一，如需部分退款，则此参数必传。
	private String bill_type;//账单类型，商户通过接口或商户经开放平台授权后其所属服务商通过接口可以获取以下账单类型：trade、signcustomer；trade指商户基于支付宝交易收单的业务账单；signcustomer是指基于商户支付宝余额收入及支出等资金变动的帐务账单；
	private String bill_date;//账单时间：日账单格式为yyyy-MM-dd，月账单格式为yyyy-MM。

	
	/*------------------------------转账必传参数---------------------------------------------------*/
	private String out_biz_no;// 商户转账唯一订单号。发起转账来源方定义的转账单据ID，用于将转账回执通知给来源方。 不同来源方给出的ID可以重复，同一个来源方必须保证其ID的唯一性。 只支持半角英文、数字，及“-”、“_”。
	private String order_id;// 支付宝转账单据号：和商户转账唯一订单号不能同时为空。当和商户转账唯一订单号同时提供时，将用本参数进行查询，忽略商户转账唯一订单号。
	private String payee_type;// 收款方账户类型。可取值： 1、ALIPAY_USERID：支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。 2、ALIPAY_LOGONID：支付宝登录号，支持邮箱和手机号格式。
	private String payee_account;// 收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。
	private String amount;// 转账金额，单位：元。 只支持2位小数，小数点前最大支持13位，金额必须大于等于0.1元。 最大转账金额以实际签约的限额为准。

	/*-----------------------------现金红包参数---------------------------------------------------*/
	private String coupon_name;// 红包名称,商户在查询列表、详情看到的名字,同时也会显示在商户付款页面。	
	private String prize_type;// 现金红包的发放形式, fixed为固定金额,random为随机金额。选择随机金额时，单个红包的金额在平均金额的0.5~1.5倍之间浮动。
	private String total_money;// 活动发放的现金总金额,最小金额1.00元,最大金额10000000.00元。每个红包的最大金额不允许超过200元,最小金额不得低于0.20元。 实际的金额限制可能会根据业务进行动态调整。
	private String total_num;//红包发放个数，最小1个,最大10000000个。 但不同的发放形式（即prize_type）会使得含义不同： (1) 若prize_type选择为固定金额，每个用户领取的红包金额为total_money除以total_num得到固定金额。 (2) 若prize_type选择为随机金额，每个用户领取的红包金额为total_money除以total_num得到的平均金额值的0.5~1.5倍。由于金额是随机的，在红包金额全部被领取完时，有可能total_num有所剩余、或者大于设置值的情况。 
	private String prize_msg;// 活动文案,用户在账单、红包中看到的账单描述、红包描述
	private String start_time;// 活动开始时间,必须大于活动创建的时间. (1) 填固定时间:2016-08-10 22:28:30, 基本格式:yyyy-MM-dd HH:mm:ss (2) 填字符串NowTime
	private String end_time;// 	活动结束时间,必须大于活动开始时间, 基本格式:yyyy-MM-dd HH:mm:ss,活动有效时间最长为6个月，过期后需要创建新的活动。
	private String merchant_link;// 商户打款后的跳转链接，从支付宝收银台打款成功后的跳转链接。不填时，打款后停留在支付宝支付成功页。商户实际跳转会自动添加crowdNo作为跳转参数。示例: http://www.yourhomepage.com?crowdNo=XXX
	private String send_freqency;// 用户在当前活动参与次数、频率限制。支持日(D)、周(W)、月(M)、终身(L)维度的限制。其中日(D)、周(W)、月(M)最多只能选择一个,终身(L)为必填项。多个配置之间使用"|"进行分隔。终身(L)次数限制最大为100，日(D)、周(W)、月(M)频率设置必须小于等于终身(L)的次数。整个字段不填时默认值为:L1。允许多次领取时，活动触发接口需要传入out_biz_no来配合。
	
	private String user_id;// 用户唯一标识userId。user_id与login_id至少有一个非空；都非空时，以user_id为准。
	private String crowd_no;// 现金活动号
	private String login_id;// 用户登录账号名：邮箱或手机号。user_id与login_id至少有一个非空，都非空时，以user_id为准。
	//private String out_biz_no;// 领取红包的外部业务号，只由可由字母、数字、下划线组成。同一个活动中不可重复，相同的外部业务号会被幂等并返回之前的结果。不填时，系统会生成一个默认固定的外部业务号。
	private String camp_status;// 修改后的活动状态, PAUSE或者READY或者CLOSED
	private String page_size;// 分页查询时每页返回的列表大小,最大为50
	private String page_index;// 分页查询时的页码，从1开始

	/*-----------------------------余利宝参数---------------------------------------------------*/

	private String fund_code;// 基金代码，必填。目前默认填001529，代表余利宝
	//private String amount;// 	余利宝申购金额，单位是“分”。如amount=123456表示申购1234.56元的余利宝份额。
	private String currency;// 金额对应的币种，目前仅支持CNY，即人民币。
	//private String out_biz_no;// 余利宝申购流水号，用于幂等控制。流水号必须长度在30到40位之间，且仅能由数字、字母、字符“-”和字符“_”组成。建议使用UUID，如“c39c24f1-73e5-497d-9b1f-0f585ae192c1”，或者使用自定义的数字流水号，如“201608150000000000000000000000000001
	private String ransom_mode;// 赎回模式，REALTIME表示实时，NOTREALTIME表示非实时赎回（T+1到账），仅支持这两种模式。实时赎回日累计金额小于等于500万，大于500万则要使用非实时赎回，选择非实时赎回且日累计金额小于等于500万则会自动转为实时。
	private String start_date;// 查询交易的开始时间，必须是格式为yyyyMMdd的日期字符串，如20160808。
	private String end_date;// 查询交易的结束时间，必须是格式为yyyyMMdd的日期字符串，且日期要大于等于start_date，时间最大跨度为30天，如start_date为20160808，则end_date最大值为20160906。
	private String page;// 页码，历史交易记录分页展示的页码。必须为正整数，最大值为99。
	
	
	
	/*------------------------------支付非必传参数---------------------------------------------------*/
	private String discountable_amount;//参与优惠计算的金额，单位为元，精确到小数点后两位
	private String store_id;//商户门店编号
	private String terminal_id;//商户机具终端编号
	private String operator_id;//商户操作员编号
	private String sys_service_provider_id;//系统商编号 该参数作为系统商返佣数据提取的依据，请填写系统商签约协议的PID
	private String quit_url;//添加该参数后在h5支付收银台会出现返回按钮，可用于用户付款中途退出并返回到该参数指定的商户网站地址。注：该参数对支付宝钱包标准收银台下的跳转不生效。
	private String passback_params;//公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。支付宝只会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
	private String extend_params;//业务扩展参数
	private String hb_fq_num;//代表花呗分期数；
	private String hb_fq_seller_percent;//商家承担手续费传入100，用户承担手续费传入0。
	private String body;//订单描述
	private String goods_detail;//订单包含的商品列表信息，Json格式： {"show_url":"https://或http://打头的商品的展示地址"} ，在支付时，可点击商品名称跳转到该地址
	private String goods_type;//商品主类型：0—虚拟类商品，1—实物类商品（默认）注：虚拟类商品不支持使用花呗渠道
	private String timeout_express="1d";//该笔订单允许的最晚付款时间，逾期将关闭交易。取值范围：1m～15d。m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。 该参数数值不接受小数点， 如 1.5h，可转换为 90m。该参数在请求到支付宝时开始计时
	private String enable_pay_channels;//可用渠道，用户只能在指定渠道范围内支付当有多个渠道时用“,”分隔注：与disable_pay_channels互斥 值：pcredit,moneyFund,debitCardExpress
	private String disable_pay_channels;//禁用渠道，用户不可用指定渠道支付当有多个渠道时用“,”分隔注：与enable_pay_channels互斥 值：pcredit,moneyFund,debitCardExpress
	private String auth_token;//获取用户授权信息，可实现如免登功能。获取方法请查阅：用户信息授权
	/*	获取用户授权信息，可实现如免登功能。获取方法请查阅：用户信息授权
		前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下几种：
		private String auth_token;//PC扫码支付的方式，支持前置模式和跳转模式。
		0：订单码-简约前置模式，对应iframe宽度不能小于600px，高度不能小于300px；
		1：订单码-前置模式，对应iframe宽度不能小于300px，高度不能小于600px；
		3：订单码-迷你前置模式，对应iframe宽度不能小于75px，高度不能小于75px；
		4：订单码-可定义宽度的嵌入式二维码，商户可根据需要设定二维码的大小。
	
		跳转模式下，用户的扫码界面是由支付宝生成的，不在商户的域名下。
		2：订单码-跳转模式*/
	private String qr_pay_mode;
	private String qrcode_width;//商户自定义二维码宽度注：qr_pay_mode=4时该参数生效
	
	
	
	/*------------------------------转账非必传参数---------------------------------------------------*/
	private String payer_show_name;// 付款方姓名（最长支持100个英文/50个汉字）。显示在收款方的账单详情页。如果该字段不传，则默认显示付款方的支付宝认证姓名或单位名称。
	private String payee_real_name;// 收款方真实姓名（最长支持100个英文/50个汉字）。 如果本参数不为空，则会校验该账户在支付宝登记的实名是否与收款方真实姓名一致。
	private String remark;// 转账备注（支持200个英文/100个汉字）。 当付款方为企业账户，且转账金额达到（大于等于）50000元，remark不能为空。收款方可见，会展示在收款用户的收支详情中。
	
	
	public String getOrder_id() {
		return order_id;
	}
	public void setOrder_id(String order_id) {
		this.order_id = order_id;
	}
	public String getHb_fq_num() {
		return hb_fq_num;
	}
	public String getHb_fq_seller_percent() {
		return hb_fq_seller_percent;
	}
	public void setHb_fq_num(String hb_fq_num) {
		this.hb_fq_num = hb_fq_num;
	}
	public void setHb_fq_seller_percent(String hb_fq_seller_percent) {
		this.hb_fq_seller_percent = hb_fq_seller_percent;
	}
	public String getQuit_url() {
		return quit_url;
	}
	public void setQuit_url(String quit_url) {
		this.quit_url = quit_url;
	}
	public String getSys_service_provider_id() {
		return sys_service_provider_id;
	}
	public void setSys_service_provider_id(String sys_service_provider_id) {
		this.sys_service_provider_id = sys_service_provider_id;
	}
	public String getStore_id() {
		return store_id;
	}
	public String getTerminal_id() {
		return terminal_id;
	}
	public String getOperator_id() {
		return operator_id;
	}
	public void setStore_id(String store_id) {
		this.store_id = store_id;
	}
	public void setTerminal_id(String terminal_id) {
		this.terminal_id = terminal_id;
	}
	public void setOperator_id(String operator_id) {
		this.operator_id = operator_id;
	}
	public String getDiscountable_amount() {
		return discountable_amount;
	}
	public void setDiscountable_amount(String discountable_amount) {
		this.discountable_amount = discountable_amount;
	}
	public String getAuth_code() {
		return auth_code;
	}
	public void setAuth_code(String auth_code) {
		this.auth_code = auth_code;
	}
	public String getOut_trade_no() {
		return out_trade_no;
	}
	public String getProduct_code() {
		return product_code;
	}
	public String getTotal_amount() {
		return total_amount;
	}
	public String getSubject() {
		return subject;
	}
	public String getPassback_params() {
		return passback_params;
	}
	public String getExtend_params() {
		return extend_params;
	}
	public String getBody() {
		return body;
	}
	public String getGoods_detail() {
		return goods_detail;
	}
	public String getGoods_type() {
		return goods_type;
	}
	public String getTimeout_express() {
		return timeout_express;
	}
	public String getEnable_pay_channels() {
		return enable_pay_channels;
	}
	public String getDisable_pay_channels() {
		return disable_pay_channels;
	}
	public String getAuth_token() {
		return auth_token;
	}
	public String getQr_pay_mode() {
		return qr_pay_mode;
	}
	public String getQrcode_width() {
		return qrcode_width;
	}
	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}
	public void setProduct_code(String product_code) {
		this.product_code = product_code;
	}
	public void setTotal_amount(String total_amount) {
		this.total_amount = total_amount;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public void setPassback_params(String passback_params) {
		this.passback_params = passback_params;
	}
	public void setExtend_params(String extend_params) {
		this.extend_params = extend_params;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public void setGoods_detail(String goods_detail) {
		this.goods_detail = goods_detail;
	}
	public void setGoods_type(String goods_type) {
		this.goods_type = goods_type;
	}
	public void setTimeout_express(String timeout_express) {
		this.timeout_express = timeout_express;
	}
	public void setEnable_pay_channels(String enable_pay_channels) {
		this.enable_pay_channels = enable_pay_channels;
	}
	public void setDisable_pay_channels(String disable_pay_channels) {
		this.disable_pay_channels = disable_pay_channels;
	}
	public void setAuth_token(String auth_token) {
		this.auth_token = auth_token;
	}
	public void setQr_pay_mode(String qr_pay_mode) {
		this.qr_pay_mode = qr_pay_mode;
	}
	public void setQrcode_width(String qrcode_width) {
		this.qrcode_width = qrcode_width;
	}
	public String getReturn_url() {
		return return_url;
	}
	public String getNotify_url() {
		return notify_url;
	}
	public void setReturn_url(String return_url) {
		this.return_url = return_url;
	}
	public void setNotify_url(String notify_url) {
		this.notify_url = notify_url;
	}
	public String getOut_biz_no() {
		return out_biz_no;
	}
	public String getPayee_type() {
		return payee_type;
	}
	public String getPayee_account() {
		return payee_account;
	}
	public String getAmount() {
		return amount;
	}
	public String getPayer_show_name() {
		return payer_show_name;
	}
	public String getPayee_real_name() {
		return payee_real_name;
	}
	public String getRemark() {
		return remark;
	}
	public void setOut_biz_no(String out_biz_no) {
		this.out_biz_no = out_biz_no;
	}
	public void setPayee_type(String payee_type) {
		this.payee_type = payee_type;
	}
	public void setPayee_account(String payee_account) {
		this.payee_account = payee_account;
	}
	public void setAmount(String amount) {
		this.amount = amount;
	}
	public void setPayer_show_name(String payer_show_name) {
		this.payer_show_name = payer_show_name;
	}
	public void setPayee_real_name(String payee_real_name) {
		this.payee_real_name = payee_real_name;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	public String getCoupon_name() {
		return coupon_name;
	}
	public String getPrize_type() {
		return prize_type;
	}
	public String getTotal_money() {
		return total_money;
	}
	public String getTotal_num() {
		return total_num;
	}
	public String getPrize_msg() {
		return prize_msg;
	}
	public String getStart_time() {
		return start_time;
	}
	public String getEnd_time() {
		return end_time;
	}
	public String getMerchant_link() {
		return merchant_link;
	}
	public String getSend_freqency() {
		return send_freqency;
	}
	public void setCoupon_name(String coupon_name) {
		this.coupon_name = coupon_name;
	}
	public void setPrize_type(String prize_type) {
		this.prize_type = prize_type;
	}
	public void setTotal_money(String total_money) {
		this.total_money = total_money;
	}
	public void setTotal_num(String total_num) {
		this.total_num = total_num;
	}
	public void setPrize_msg(String prize_msg) {
		this.prize_msg = prize_msg;
	}
	public void setStart_time(String start_time) {
		this.start_time = start_time;
	}
	public void setEnd_time(String end_time) {
		this.end_time = end_time;
	}
	public void setMerchant_link(String merchant_link) {
		this.merchant_link = merchant_link;
	}
	public void setSend_freqency(String send_freqency) {
		this.send_freqency = send_freqency;
	}
	public String getUser_id() {
		return user_id;
	}
	public String getCrowd_no() {
		return crowd_no;
	}
	public String getLogin_id() {
		return login_id;
	}
	public void setUser_id(String user_id) {
		this.user_id = user_id;
	}
	public void setCrowd_no(String crowd_no) {
		this.crowd_no = crowd_no;
	}
	public void setLogin_id(String login_id) {
		this.login_id = login_id;
	}
	public String getCamp_status() {
		return camp_status;
	}
	public void setCamp_status(String camp_status) {
		this.camp_status = camp_status;
	}
	public String getPage_size() {
		return page_size;
	}
	public String getPage_index() {
		return page_index;
	}
	public void setPage_size(String page_size) {
		this.page_size = page_size;
	}
	public void setPage_index(String page_index) {
		this.page_index = page_index;
	}
	public String getFund_code() {
		return fund_code;
	}
	public String getCurrency() {
		return currency;
	}
	public void setFund_code(String fund_code) {
		this.fund_code = fund_code;
	}
	public void setCurrency(String currency) {
		this.currency = currency;
	}
	public String getRansom_mode() {
		return ransom_mode;
	}
	public void setRansom_mode(String ransom_mode) {
		this.ransom_mode = ransom_mode;
	}
	public String getStart_date() {
		return start_date;
	}
	public String getEnd_date() {
		return end_date;
	}
	public String getPage() {
		return page;
	}
	public void setStart_date(String start_date) {
		this.start_date = start_date;
	}
	public void setEnd_date(String end_date) {
		this.end_date = end_date;
	}
	public void setPage(String page) {
		this.page = page;
	}
	public String getTrade_no() {
		return trade_no;
	}
	public void setTrade_no(String trade_no) {
		this.trade_no = trade_no;
	}
	public String getRefund_amount() {
		return refund_amount;
	}
	public String getRefund_reason() {
		return refund_reason;
	}
	public String getOut_request_no() {
		return out_request_no;
	}
	public void setRefund_amount(String refund_amount) {
		this.refund_amount = refund_amount;
	}
	public void setRefund_reason(String refund_reason) {
		this.refund_reason = refund_reason;
	}
	public void setOut_request_no(String out_request_no) {
		this.out_request_no = out_request_no;
	}
	public String getBill_type() {
		return bill_type;
	}
	public String getBill_date() {
		return bill_date;
	}
	public void setBill_type(String bill_type) {
		this.bill_type = bill_type;
	}
	public void setBill_date(String bill_date) {
		this.bill_date = bill_date;
	}

	
	
}
